package cc.rengu.igas.channel.esb.facade;


import cc.rengu.igas.channel.esb.facade.request.*;
import cc.rengu.igas.channel.esb.facade.response.*;
import cc.rengu.igas.channel.esb.facade.result.Result;

/**
 * 支付通道调用银数的服务
 *
 * @author wangcheng
 */
public interface UnionDataService {

    /**
     * 银数消费接口
     *
     * @param updcConsumeRequest 贷记卡消费请求
     * @return 贷记卡消费应答
     */
    Result<UpdcConsumeResponse> updcConsume(UpdcConsumeRequest updcConsumeRequest);

    /**
     * 银数消费冲正接口
     *
     * @param updcConsumeResvalRequest 贷记卡消费冲正请求
     * @return 贷记卡消费冲正应答
     */
    Result<UpdcConsumeResvalResponse> updcConsumeRevsal(UpdcConsumeResvalRequest updcConsumeResvalRequest);

    /**
     * 银数消费撤销接口
     *
     * @param updcConsumeCancelRequest 贷记卡消费撤销请求
     * @return 贷记卡消费撤销应答
     */
    Result<UpdcConsumeCancelResponse> updcConsumeCancel(UpdcConsumeCancelRequest updcConsumeCancelRequest);

    /**
     * 银数消费撤销冲正接口
     *
     * @param updcConsumeCancelResvalRequest 贷记卡消费撤销冲正请求
     * @return 贷记卡消费撤销冲正应答
     */
    Result<UpdcConsumeCancelResvalResponse> updcConsumeCancelRevsal(UpdcConsumeCancelResvalRequest updcConsumeCancelResvalRequest);

    /**
     * 银数消费退货
     *
     * @param updcConsumeRefundRequest 贷记卡退款请求
     * @return 贷记卡退款应答
     */
    Result<UpdcConsumeRefundResponse> updcConsumeRefund(UpdcConsumeRefundRequest updcConsumeRefundRequest);

    /**
     * 银数分期消费
     *
     * @param updcStageConsumeRequest 分期消费请求
     * @return 分期消费应答
     */
    Result<UpdcStageConsumeResponse> updcStageConsume(UpdcStageConsumeRequest updcStageConsumeRequest);

    /**
     * 银数分期消费冲正
     *
     * @param updcStageConsumeRevsalRequest 分期消费冲正请求
     * @return 分期消费冲正应答
     */
    Result<UpdcStageConsumeRevsalResponse> updbStageConsumeRevsal(UpdcStageConsumeRevsalRequest updcStageConsumeRevsalRequest);

    /**
     * 银数分期消费撤销
     *
     * @param updcStageConsumeCancelRequest 分期消费撤销请求
     * @return 分期消费撤销应答
     */
    Result<UpdcStageConsumeCancelResponse> updbStageConsumeCancel(UpdcStageConsumeCancelRequest updcStageConsumeCancelRequest);

    /**
     * 银数分期消费撤销冲正
     *
     * @param updcStageConsumeCancelRevsalRequest 分期消费撤销冲正
     * @return 分期消费撤销冲正
     */
    Result<UpdcStageConsumeCancelRevsalResponse> updbStageConsumeCancelRevsal(UpdcStageConsumeCancelRevsalRequest updcStageConsumeCancelRevsalRequest);

    /**
     * 银数分期试算
     *
     * @param updcStageTrialRequest 分期试算请求
     * @return 分期试算应答
     */
    Result<UpdcStageTrialResponse> updbStageTrial(UpdcStageTrialRequest updcStageTrialRequest);

    /**
     * 银数预授权
     *
     * @param updcPreAuthRequest 预授权请求
     * @return 预授权应答
     */
    Result<UpdcPreAuthResponse> updcPreAuth(UpdcPreAuthRequest updcPreAuthRequest);

    /**
     * 银数预授权冲正
     *
     * @param updcPreAuthRevsalRequest 预授权冲正请求
     * @return 预授权冲正应答
     */
    Result<UpdcPreAuthRevsalResponse> updcPreAuthRevsal(UpdcPreAuthRevsalRequest updcPreAuthRevsalRequest);

    /**
     * 银数预授权撤销
     *
     * @param updcPreAuthCancelRequest 预授权撤销请求
     * @return 预授权撤销应答
     */
    Result<UpdcPreAuthCancelResponse> updcPreAuthCancel(UpdcPreAuthCancelRequest updcPreAuthCancelRequest);

    /**
     * 银数预授权撤销冲正
     *
     * @param updcPreAuthCancelRevsalRequest 预授权撤销冲正
     * @return 预授权撤销冲正应答
     */
    Result<UpdcPreAuthCancelRevsalResponse> updcPreAuthCancelRevsal(UpdcPreAuthCancelRevsalRequest updcPreAuthCancelRevsalRequest);

    /**
     * 银数预授权完成
     *
     * @param updcPreAuthCompRequest 预授权完成请求
     * @return 预授权完成应答
     */
    Result<UpdcPreAuthCompResponse> updcPreAuthComp(UpdcPreAuthCompRequest updcPreAuthCompRequest);

    /**
     * 银数预授权完成冲正
     *
     * @param updcPreAuthCompRevsalRequest 预授权完成冲正请求
     * @return 预授权完成冲正应答
     */
    Result<UpdcPreAuthCompRevsalResponse> updcPreAuthCompRevsal(UpdcPreAuthCompRevsalRequest updcPreAuthCompRevsalRequest);

    /**
     * 银数预授权完成撤销
     *
     * @param updcPreAuthCompCancelRequest 预授权完成撤销请求
     * @return 预授权完成撤销应答
     */
    Result<UpdcPreAuthCompCancelResponse> updcPreAuthCompCancel(UpdcPreAuthCompCancelRequest updcPreAuthCompCancelRequest);

    /**
     * 银数预授权完成撤销冲正
     *
     * @param updcPreAuthCompCancelRevsalRequest 预授权完成撤销冲正请求
     * @return 预授权完成撤销冲正应答
     */
    Result<UpdcPreAuthCompCancelRevsalResponse> updcPreAuthCompCancelRevsal(UpdcPreAuthCompCancelRevsalRequest updcPreAuthCompCancelRevsalRequest);

    /**
     * 银数交易授权查证查询
     *
     * @param updcTransAuthVerifyQueryRequest 交易授权查证请求
     * @return 交易授权查证应答
     */
    Result<UpdcTransAuthVerifyQueryResponse> updcTransAuthVerifyQuery(UpdcTransAuthVerifyQueryRequest updcTransAuthVerifyQueryRequest);
}
